package progetto.gruppo0506;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.GregorianCalendar;
import android.content.Context;
import android.os.Parcel;
import android.util.Log;

public class PreferenzeUtente {
	
	private GregorianCalendar inizio;
	private GregorianCalendar fine;
	private float preferenzaGastronomia;
	private float preferenzaDivertimento;
	private float preferenzaCultura;
	private float preferenzaGastronomiaNorm;
	private float preferenzaDivertimentoNorm;
	private float preferenzaCulturaNorm;
	private String tipoTrasporto;
	Context context;

	public static final int GASTRONOMIA = 0;
	public static final int DIVERTIMENTO = 1;
	public static final int CULTURA = 2;

	public static final String AUTOVETTURA = "driving";
	public static final String PIEDI = "walking";

	public PreferenzeUtente(Context context) {
		this.context = context;
	}

	public void normalizzaPreferenze() {
		float totPerc = preferenzaGastronomia + preferenzaDivertimento
				+ preferenzaCultura;

		preferenzaCulturaNorm = preferenzaCultura / totPerc;
		preferenzaDivertimentoNorm = preferenzaDivertimento / totPerc;
		preferenzaGastronomiaNorm = preferenzaGastronomia / totPerc;
	}

	public void setPreferenzaCultura(float preferenzaCultura) {
		this.preferenzaCultura = preferenzaCultura;
	}

	public void setPreferenzaDivertimento(float preferenzaDivertimento) {
		this.preferenzaDivertimento = preferenzaDivertimento;
	}

	public void setPreferenzaGastronomia(float preferenzaGastronomia) {
		this.preferenzaGastronomia = preferenzaGastronomia;
	}

	public float getPreferenzaGastronomiaNorm() {
		return preferenzaGastronomiaNorm;
	}

	public float getPreferenzaDivertimentoNorm() {
		return preferenzaDivertimentoNorm;
	}

	public float getPreferenzaCulturaNorm() {
		return preferenzaCulturaNorm;
	}

	public String getTipoTrasporto() {
		return tipoTrasporto;
	}

	public void setTipoTrasporto(String tipoTrasporto) {
		this.tipoTrasporto = tipoTrasporto;
	}

	public GregorianCalendar getFine() {
		return fine;
	}

	public void setFine(GregorianCalendar fine) {
		this.fine = fine;
	}

	public GregorianCalendar getInizio() {
		return inizio;
	}

	public void setInizio(GregorianCalendar inizio) {
		this.inizio = inizio;
	}

	public void salvaPreferenze() {

		FileOutputStream out;

		try {
			out = context
					.openFileOutput("tempoProva.dat", Context.MODE_PRIVATE);
			ObjectOutputStream s = new ObjectOutputStream(out);
			s.writeObject(tipoTrasporto);
			s.writeObject(inizio);
			s.writeObject(fine);
			s.writeFloat(preferenzaGastronomiaNorm);
			s.writeFloat(preferenzaDivertimentoNorm);
			s.writeFloat(preferenzaCulturaNorm);
			s.close();

		} catch (Exception e) {
			// TODO Auto-generated catch block
			Log.d("Errore", e.getMessage());
		}

	}

	public void caricaPreferenze() {

		FileInputStream i;

		try {
			i = context.openFileInput("tempoProva.dat");
			ObjectInputStream is = new ObjectInputStream(i);
			tipoTrasporto = (String) is.readObject();
			inizio = (GregorianCalendar) is.readObject();
			fine = (GregorianCalendar) is.readObject();
			preferenzaGastronomiaNorm = (float) is.readFloat();
			preferenzaDivertimentoNorm = (float) is.readFloat();
			preferenzaCulturaNorm = (float) is.readFloat();
			is.close();

		} catch (Exception e) {
			// TODO Auto-generated catch block
			Log.d("Errore", e.getMessage());
		}
	}

	public int describeContents() {
		// TODO Auto-generated method stub
		return 0;
	}

	public void writeToParcel(Parcel arg0, int arg1) {
		// TODO Auto-generated method stub
		
	}
}